package Day_0215.JVM;

/**
 * @author zxc
 * @date 2023/02/15 22:27
 **/
public class StackOverflowError {
    public static void main(String[] args) {
        /**
         * 栈内存溢出的情况
         * ===》
         * 1.栈是线程私有的，它的生命周期与线程相同，
         * 每个方法在执行的时候都会创建一个栈帧，用来存储局部变量表，操作数栈，动态链接，方法出口等信息。
         * 局部变量表又包含基本数据类型，对象引用类型。
         *
         * 2.如果线程请求的栈深度大于虚拟机所允许的最大深度，将抛出StackOverflowError异常，方法递归调用产生这种结果。
         *
         * 3.如果Java虚拟机栈可以动态扩展，并且扩展的动作已经尝试过，但是无法申请到足够的内存去完成扩展;
         * 或者在新建立线程的时候没有足够的内存去创建对应的虚拟机栈，那么Java虚拟机将抛出一个OutOfMemory 异常。(线程启动过多)
         *
         * 4.参数 -Xss 去调整JVM栈的大小
         *
         */
    }
}
